     AT86 has a built-in context-sensitive help facility.  Just type "?" atì
any point, and you'll see a pop up window that attempts to clarify whatever isì
going on.  The current screen is automatically displayed when you type "help"ì
in COMMAND MODE instead of typing "?".  This file is an ordinary ASCII fileì
called AT86.HLP which should reside in the same (sub)directory AT86.COMì
resides in, since then AT86 knows how to find it.  Currently this file tellsì
you the meaning of a number of non-DEBUG.COM like commands.  To see more thanì
the present screen, type down arrow to get one more line, or PgDn to get theì
next screen.  Special commands to be typed in COMMAND MODE are:

bye		return to DOS
chdir path	change directory to pathname path
cls		clear screen
cont		continue execution at full speed (not tracing)
cpu		display info on CPU, RAM, ROM, serial, parallel, speed
delete num	delete instruction at offset num
dir template	list directory with template specified
edit num	edit statement at offset num
erase file	erase file with filename file
files template	list directory with template specified
insert num	insert instruction(s) starting at offset num
kill file	kill (erase) file with filename file
list [num]	list (display) program from start [from offset num]
llist [num]	print program from start [from offset num]
load file	load file with filename file.com
new		delete all labels, restore initial registers values
pause n		set pause interval to n/10 seconds (for demo's)
quit		return to DOS
run		run program from start at full speed (not trace)
save file	save file with filename file.com
system		return to DOS
trace [num]	trace program from start [from offset num]
type file	type (display) file with filename file
width 4 or 8	set screen width to 40 or 80 columns

     These commands exist in similar forms in DOS or BASIC.  AT86 acceptsì
relaxed syntax.  For example, on the files command, you can enclose theì
filename template in double quotes or not as you choose.  The insert commandì
is added since legal line numbers always correspond to addresses of currentì
instructions.  On the other hand, renumbering is automatic, so BASIC'sì
renumber command is superfluous.
     In addition to these commands, you have, of course, the standard AT86ì
commands, which can also be useful, particularly the A (assemble) and Tì
(trace) commands.


		AT86 ASSEMBLY LANGUAGE INTERPRETER

     The AT86 debug program has a built-in simple assembly-languageì
interpreter facilty.  In several ways AT86 mimics the BASIC interpreter,ì
except that it expects assembly language statements instead of BASICì
statements.  It also differs from previous interpreters in a number of ways,ì
such as having the full power of a screen debugger and using native machineì
code as the intermediate interpreter language, which can lead to fasterì
programs than those from compilers let alone usual interpreters.
     The BASIC-like word commands coexist with the DEBUG-style single letterì
commands remarkably peacefully.  Words like load, save, list, llist, run, andì
delete are syntactically illegal from DEBUG's point of view, and hence can beì
used unambiguously directly in AT86's COMMAND MODE.  The BASIC command "new"ì
is ambiguous, since to debug it means name the file called ew, but if youì
really want to name such a file you could type n ew, which is not recognizedì
as new.
     BASIC uses statement line numbers for branching and editing purposes, andì
the AT86 instructions are automatically located in memory and can be referredì
to by their hexadecimal memory offset values.  You use these offset valuesì
like line numbers to insert, delete, edit, trace, and execute instructions. ì
Since many instructions are longer than one byte, there are many illegal "lineì
numbers" referring to the middles of instructions.  AT86 tells you if you tryì
to refer to one of these illegal numbers.  To make sure that it knows what'sì
an instruction without undue overhead, AT86 insists that its code area (codeì
segment) contains only instructions.  It has a very fast algorithm forì
scanning through a program up to the END statement that allows it to check forì
legal line numbers.  This same algorithm is used to insert, delete andì
overtype instructions, all of which can involve shifting the code up or downì
in memory.  When you make a change in a program, AT86 "reassembles" the codeì
at about 11,000 instructions a second on an ordinary PC.  Actually it doesn'tì
have to completely reassemble the code; it only has to shift the code asì
needed and update all relative offsets in jmp and call instructionsì
appropriately.
     AT86 allows the use of labels for referring to variables and jumpì
addresses.  As you type in or list a program, references to undefined labelsì
are stamped with a "U" to the left of the corresponding machine code.  Whenì
you resolve these references by typing in a statement with a missing label,ì
the references are filled in.   For example, you can type in "call alpha",ì
where alpha hasn't been defined previously, and then later type in theì
subroutine called alpha.  If you subsequently delete with instruction with theì
label alpha, all corresponding references are stamped as Undefined, until youì
redefine their target again.
     AT86 accepts all instructions in the 8086/80186/80286/8087 repertoire.  Aì
special pseudo op, "end" is used to specify the end of the code.  Typicallyì
you don't have to use the end pseudo op, since AT86 knows where your codeì
ends.  However if you want to delete the code from some point through the endì
of what you've typed in, you can type end in sooner.  To start over, youì
should use the word "new" instead, since that also deletes the labels you'veì
typed in.


			AT86 EDIT FACILITY

     AT86 has a line edit facility patterned after the PMATE editor that worksì
both in COMMAND and ASSEMBLE MODEs.  While typing in a command or assemblyì
language statement, you can use the left anf right arrow keys to move aroundì
the line.  Typing ordinary characters simply inserts them at the cursorì
position.  Keystrokes are identified as follows:

Home		move cursor to beginning of line
End		move cursor to end of line
Ctrl-O		move one word left  (Ctrl-left- arrow is an alias)
Ctrl-P		move one word right (Ctrl-right-arrow is an alias)
Ctrl-Q		delete word to left
Ctrl-W		delete word to right
Ctrl-K		delete (Kill) from cursor to end of line
Del		deletes character under cursor
Backspace	deletes character before cursor

     To edit a line, type

-edit line_number

in COMMAND MODE.  This switches to ASSEMBLE MODE and automatically calls upì
the line with the line_number (instruction offset) specified.  Make theì
changes you want and type <cr> to go onto the next line.  To quit editing,ì
type Esc, which returns to COMMAND MODE

